﻿/* Copyright 2010-present MongoDB Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Reflection;
using System.Threading;
using MongoDB.Bson.Serialization;

namespace MongoDB.Driver.Linq.Linq3Implementation.Reflection
{
    internal static class MongoQueryableMethod
    {
        // private static fields
        private static readonly MethodInfo __anyAsync;
        private static readonly MethodInfo __anyWithPredicateAsync;
        private static readonly MethodInfo __appendStage;
        private static readonly MethodInfo __as;
        private static readonly MethodInfo __averageDecimalAsync;
        private static readonly MethodInfo __averageDecimalWithSelectorAsync;
        private static readonly MethodInfo __averageDoubleAsync;
        private static readonly MethodInfo __averageDoubleWithSelectorAsync;
        private static readonly MethodInfo __averageInt32Async;
        private static readonly MethodInfo __averageInt32WithSelectorAsync;
        private static readonly MethodInfo __averageInt64Async;
        private static readonly MethodInfo __averageInt64WithSelectorAsync;
        private static readonly MethodInfo __averageNullableDecimalAsync;
        private static readonly MethodInfo __averageNullableDecimalWithSelectorAsync;
        private static readonly MethodInfo __averageNullableDoubleAsync;
        private static readonly MethodInfo __averageNullableDoubleWithSelectorAsync;
        private static readonly MethodInfo __averageNullableInt32Async;
        private static readonly MethodInfo __averageNullableInt32WithSelectorAsync;
        private static readonly MethodInfo __averageNullableInt64Async;
        private static readonly MethodInfo __averageNullableInt64WithSelectorAsync;
        private static readonly MethodInfo __averageNullableSingleAsync;
        private static readonly MethodInfo __averageNullableSingleWithSelectorAsync;
        private static readonly MethodInfo __averageSingleAsync;
        private static readonly MethodInfo __averageSingleWithSelectorAsync;
        private static readonly MethodInfo __countAsync;
        private static readonly MethodInfo __countWithPredicateAsync;
        private static readonly MethodInfo __densifyWithArrayPartitionByFields;
        private static readonly MethodInfo __documents;
        private static readonly MethodInfo __documentsWithSerializer;
        private static readonly MethodInfo __firstAsync;
        private static readonly MethodInfo __firstOrDefaultAsync;
        private static readonly MethodInfo __firstOrDefaultWithPredicateAsync;
        private static readonly MethodInfo __firstWithPredicateAsync;
        private static readonly MethodInfo __longCountAsync;
        private static readonly MethodInfo __longCountWithPredicateAsync;
        private static readonly MethodInfo __maxAsync;
        private static readonly MethodInfo __maxWithSelectorAsync;
        private static readonly MethodInfo __minAsync;
        private static readonly MethodInfo __minWithSelectorAsync;
        private static readonly MethodInfo __sample;
        private static readonly MethodInfo __singleAsync;
        private static readonly MethodInfo __singleOrDefaultAsync;
        private static readonly MethodInfo __singleOrDefaultWithPredicateAsync;
        private static readonly MethodInfo __singleWithPredicateAsync;
        private static readonly MethodInfo __skipWithLong;
        private static readonly MethodInfo __standardDeviationPopulationDecimal;
        private static readonly MethodInfo __standardDeviationPopulationDecimalAsync;
        private static readonly MethodInfo __standardDeviationPopulationDecimalWithSelector;
        private static readonly MethodInfo __standardDeviationPopulationDecimalWithSelectorAsync;
        private static readonly MethodInfo __standardDeviationPopulationDouble;
        private static readonly MethodInfo __standardDeviationPopulationDoubleAsync;
        private static readonly MethodInfo __standardDeviationPopulationDoubleWithSelector;
        private static readonly MethodInfo __standardDeviationPopulationDoubleWithSelectorAsync;
        private static readonly MethodInfo __standardDeviationPopulationInt32;
        private static readonly MethodInfo __standardDeviationPopulationInt32Async;
        private static readonly MethodInfo __standardDeviationPopulationInt32WithSelector;
        private static readonly MethodInfo __standardDeviationPopulationInt32WithSelectorAsync;
        private static readonly MethodInfo __standardDeviationPopulationInt64;
        private static readonly MethodInfo __standardDeviationPopulationInt64Async;
        private static readonly MethodInfo __standardDeviationPopulationInt64WithSelector;
        private static readonly MethodInfo __standardDeviationPopulationInt64WithSelectorAsync;
        private static readonly MethodInfo __standardDeviationPopulationNullableDecimal;
        private static readonly MethodInfo __standardDeviationPopulationNullableDecimalAsync;
        private static readonly MethodInfo __standardDeviationPopulationNullableDecimalWithSelector;
        private static readonly MethodInfo __standardDeviationPopulationNullableDecimalWithSelectorAsync;
        private static readonly MethodInfo __standardDeviationPopulationNullableDouble;
        private static readonly MethodInfo __standardDeviationPopulationNullableDoubleAsync;
        private static readonly MethodInfo __standardDeviationPopulationNullableDoubleWithSelector;
        private static readonly MethodInfo __standardDeviationPopulationNullableDoubleWithSelectorAsync;
        private static readonly MethodInfo __standardDeviationPopulationNullableInt32;
        private static readonly MethodInfo __standardDeviationPopulationNullableInt32Async;
        private static readonly MethodInfo __standardDeviationPopulationNullableInt32WithSelector;
        private static readonly MethodInfo __standardDeviationPopulationNullableInt32WithSelectorAsync;
        private static readonly MethodInfo __standardDeviationPopulationNullableInt64;
        private static readonly MethodInfo __standardDeviationPopulationNullableInt64Async;
        private static readonly MethodInfo __standardDeviationPopulationNullableInt64WithSelector;
        private static readonly MethodInfo __standardDeviationPopulationNullableInt64WithSelectorAsync;
        private static readonly MethodInfo __standardDeviationPopulationNullableSingle;
        private static readonly MethodInfo __standardDeviationPopulationNullableSingleAsync;
        private static readonly MethodInfo __standardDeviationPopulationNullableSingleWithSelector;
        private static readonly MethodInfo __standardDeviationPopulationNullableSingleWithSelectorAsync;
        private static readonly MethodInfo __standardDeviationPopulationSingle;
        private static readonly MethodInfo __standardDeviationPopulationSingleAsync;
        private static readonly MethodInfo __standardDeviationPopulationSingleWithSelector;
        private static readonly MethodInfo __standardDeviationPopulationSingleWithSelectorAsync;
        private static readonly MethodInfo __standardDeviationSampleDecimal;
        private static readonly MethodInfo __standardDeviationSampleDecimalAsync;
        private static readonly MethodInfo __standardDeviationSampleDecimalWithSelector;
        private static readonly MethodInfo __standardDeviationSampleDecimalWithSelectorAsync;
        private static readonly MethodInfo __standardDeviationSampleDouble;
        private static readonly MethodInfo __standardDeviationSampleDoubleAsync;
        private static readonly MethodInfo __standardDeviationSampleDoubleWithSelector;
        private static readonly MethodInfo __standardDeviationSampleDoubleWithSelectorAsync;
        private static readonly MethodInfo __standardDeviationSampleInt32;
        private static readonly MethodInfo __standardDeviationSampleInt32Async;
        private static readonly MethodInfo __standardDeviationSampleInt32WithSelector;
        private static readonly MethodInfo __standardDeviationSampleInt32WithSelectorAsync;
        private static readonly MethodInfo __standardDeviationSampleInt64;
        private static readonly MethodInfo __standardDeviationSampleInt64Async;
        private static readonly MethodInfo __standardDeviationSampleInt64WithSelector;
        private static readonly MethodInfo __standardDeviationSampleInt64WithSelectorAsync;
        private static readonly MethodInfo __standardDeviationSampleNullableDecimal;
        private static readonly MethodInfo __standardDeviationSampleNullableDecimalAsync;
        private static readonly MethodInfo __standardDeviationSampleNullableDecimalWithSelector;
        private static readonly MethodInfo __standardDeviationSampleNullableDecimalWithSelectorAsync;
        private static readonly MethodInfo __standardDeviationSampleNullableDouble;
        private static readonly MethodInfo __standardDeviationSampleNullableDoubleAsync;
        private static readonly MethodInfo __standardDeviationSampleNullableDoubleWithSelector;
        private static readonly MethodInfo __standardDeviationSampleNullableDoubleWithSelectorAsync;
        private static readonly MethodInfo __standardDeviationSampleNullableInt32;
        private static readonly MethodInfo __standardDeviationSampleNullableInt32Async;
        private static readonly MethodInfo __standardDeviationSampleNullableInt32WithSelector;
        private static readonly MethodInfo __standardDeviationSampleNullableInt32WithSelectorAsync;
        private static readonly MethodInfo __standardDeviationSampleNullableInt64;
        private static readonly MethodInfo __standardDeviationSampleNullableInt64Async;
        private static readonly MethodInfo __standardDeviationSampleNullableInt64WithSelector;
        private static readonly MethodInfo __standardDeviationSampleNullableInt64WithSelectorAsync;
        private static readonly MethodInfo __standardDeviationSampleNullableSingle;
        private static readonly MethodInfo __standardDeviationSampleNullableSingleAsync;
        private static readonly MethodInfo __standardDeviationSampleNullableSingleWithSelector;
        private static readonly MethodInfo __standardDeviationSampleNullableSingleWithSelectorAsync;
        private static readonly MethodInfo __standardDeviationSampleSingle;
        private static readonly MethodInfo __standardDeviationSampleSingleAsync;
        private static readonly MethodInfo __standardDeviationSampleSingleWithSelector;
        private static readonly MethodInfo __standardDeviationSampleSingleWithSelectorAsync;
        private static readonly MethodInfo __sumDecimalAsync;
        private static readonly MethodInfo __sumDecimalWithSelectorAsync;
        private static readonly MethodInfo __sumDoubleAsync;
        private static readonly MethodInfo __sumDoubleWithSelectorAsync;
        private static readonly MethodInfo __sumInt32Async;
        private static readonly MethodInfo __sumInt32WithSelectorAsync;
        private static readonly MethodInfo __sumInt64Async;
        private static readonly MethodInfo __sumInt64WithSelectorAsync;
        private static readonly MethodInfo __sumNullableDecimalAsync;
        private static readonly MethodInfo __sumNullableDecimalWithSelectorAsync;
        private static readonly MethodInfo __sumNullableDoubleAsync;
        private static readonly MethodInfo __sumNullableDoubleWithSelectorAsync;
        private static readonly MethodInfo __sumNullableInt32Async;
        private static readonly MethodInfo __sumNullableInt32WithSelectorAsync;
        private static readonly MethodInfo __sumNullableInt64Async;
        private static readonly MethodInfo __sumNullableInt64WithSelectorAsync;
        private static readonly MethodInfo __sumNullableSingleAsync;
        private static readonly MethodInfo __sumNullableSingleWithSelectorAsync;
        private static readonly MethodInfo __sumSingleAsync;
        private static readonly MethodInfo __sumSingleWithSelectorAsync;
        private static readonly MethodInfo __takeWithLong;

        // static constructor
        static MongoQueryableMethod()
        {
            __anyAsync = ReflectionInfo.Method((IMongoQueryable<object> source, CancellationToken cancellationToken) => source.AnyAsync(cancellationToken));
            __anyWithPredicateAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, bool>> predicate, CancellationToken cancellationToken) => source.AnyAsync(predicate, cancellationToken));
            __appendStage = ReflectionInfo.Method((IMongoQueryable<object> source, PipelineStageDefinition<object, object> stage, IBsonSerializer<object> resultSerializer) => source.AppendStage(stage, resultSerializer));
            __as = ReflectionInfo.Method((IMongoQueryable<object> source, IBsonSerializer<object> resultSerializer) => source.As(resultSerializer));
            __averageDecimalAsync = ReflectionInfo.Method((IMongoQueryable<decimal> source, CancellationToken cancellationToken) => source.AverageAsync(cancellationToken));
            __averageDecimalWithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, decimal>> selector, CancellationToken cancellationToken) => source.AverageAsync(selector, cancellationToken));
            __averageDoubleAsync = ReflectionInfo.Method((IMongoQueryable<double> source, CancellationToken cancellationToken) => source.AverageAsync(cancellationToken));
            __averageDoubleWithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, double>> selector, CancellationToken cancellationToken) => source.AverageAsync(selector, cancellationToken));
            __averageInt32Async = ReflectionInfo.Method((IMongoQueryable<int> source, CancellationToken cancellationToken) => source.AverageAsync(cancellationToken));
            __averageInt32WithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, int>> selector, CancellationToken cancellationToken) => source.AverageAsync(selector, cancellationToken));
            __averageInt64Async = ReflectionInfo.Method((IMongoQueryable<long> source, CancellationToken cancellationToken) => source.AverageAsync(cancellationToken));
            __averageInt64WithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, long>> selector, CancellationToken cancellationToken) => source.AverageAsync(selector, cancellationToken));
            __averageNullableDecimalAsync = ReflectionInfo.Method((IMongoQueryable<decimal?> source, CancellationToken cancellationToken) => source.AverageAsync(cancellationToken));
            __averageNullableDecimalWithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, decimal?>> selector, CancellationToken cancellationToken) => source.AverageAsync(selector, cancellationToken));
            __averageNullableDoubleAsync = ReflectionInfo.Method((IMongoQueryable<double?> source, CancellationToken cancellationToken) => source.AverageAsync(cancellationToken));
            __averageNullableDoubleWithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, double?>> selector, CancellationToken cancellationToken) => source.AverageAsync(selector, cancellationToken));
            __averageNullableInt32Async = ReflectionInfo.Method((IMongoQueryable<int?> source, CancellationToken cancellationToken) => source.AverageAsync(cancellationToken));
            __averageNullableInt32WithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, int?>> selector, CancellationToken cancellationToken) => source.AverageAsync(selector, cancellationToken));
            __averageNullableInt64Async = ReflectionInfo.Method((IMongoQueryable<long?> source, CancellationToken cancellationToken) => source.AverageAsync(cancellationToken));
            __averageNullableInt64WithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, long?>> selector, CancellationToken cancellationToken) => source.AverageAsync(selector, cancellationToken));
            __averageNullableSingleAsync = ReflectionInfo.Method((IMongoQueryable<float?> source, CancellationToken cancellationToken) => source.AverageAsync(cancellationToken));
            __averageNullableSingleWithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, float?>> selector, CancellationToken cancellationToken) => source.AverageAsync(selector, cancellationToken));
            __averageSingleAsync = ReflectionInfo.Method((IMongoQueryable<float> source, CancellationToken cancellationToken) => source.AverageAsync(cancellationToken));
            __averageSingleWithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, float>> selector, CancellationToken cancellationToken) => source.AverageAsync(selector, cancellationToken));
            __countAsync = ReflectionInfo.Method((IMongoQueryable<object> source, CancellationToken cancellationToken) => source.CountAsync(cancellationToken));
            __countWithPredicateAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, bool>> predicate, CancellationToken cancellationToken) => source.CountAsync(predicate, cancellationToken));
            __densifyWithArrayPartitionByFields = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, object>> field, DensifyRange range, Expression<Func<object, object>>[] partitionByFields) => source.Densify(field, range, partitionByFields));
            __documents = ReflectionInfo.Method((IMongoQueryable<NoPipelineInput> source, object[] documents) => source.Documents(documents));
            __documentsWithSerializer = ReflectionInfo.Method((IMongoQueryable<NoPipelineInput> source, IEnumerable<object> documents, IBsonSerializer<object> serializer) => source.Documents(documents, serializer));
            __firstAsync = ReflectionInfo.Method((IMongoQueryable<object> source, CancellationToken cancellationToken) => source.FirstAsync(cancellationToken));
            __firstOrDefaultAsync = ReflectionInfo.Method((IMongoQueryable<object> source, CancellationToken cancellationToken) => source.FirstOrDefaultAsync(cancellationToken));
            __firstOrDefaultWithPredicateAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, bool>> predicate, CancellationToken cancellationToken) => source.FirstOrDefaultAsync(predicate, cancellationToken));
            __firstWithPredicateAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, bool>> predicate, CancellationToken cancellationToken) => source.FirstAsync(predicate, cancellationToken));
            __longCountAsync = ReflectionInfo.Method((IMongoQueryable<object> source, CancellationToken cancellationToken) => source.LongCountAsync(cancellationToken));
            __longCountWithPredicateAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, bool>> predicate, CancellationToken cancellationToken) => source.LongCountAsync(predicate, cancellationToken));
            __maxAsync = ReflectionInfo.Method((IMongoQueryable<object> source, CancellationToken cancellationToken) => source.MaxAsync(cancellationToken));
            __maxWithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, object>> selector, CancellationToken cancellationToken) => source.MaxAsync(selector, cancellationToken));
            __minAsync = ReflectionInfo.Method((IMongoQueryable<object> source, CancellationToken cancellationToken) => source.MinAsync(cancellationToken));
            __minWithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, object>> selector, CancellationToken cancellationToken) => source.MinAsync(selector, cancellationToken));
            __sample = ReflectionInfo.Method((IMongoQueryable<object> source, long size) => source.Sample(size));
            __singleAsync = ReflectionInfo.Method((IMongoQueryable<object> source, CancellationToken cancellationToken) => source.SingleAsync(cancellationToken));
            __singleOrDefaultAsync = ReflectionInfo.Method((IMongoQueryable<object> source, CancellationToken cancellationToken) => source.SingleOrDefaultAsync(cancellationToken));
            __singleOrDefaultWithPredicateAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, bool>> predicate, CancellationToken cancellationToken) => source.SingleOrDefaultAsync(predicate, cancellationToken));
            __singleWithPredicateAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, bool>> predicate, CancellationToken cancellationToken) => source.SingleAsync(predicate, cancellationToken));
            __skipWithLong = ReflectionInfo.Method((IMongoQueryable<object> source, long count) => source.Skip(count));
            __standardDeviationPopulationDecimal = ReflectionInfo.Method((IMongoQueryable<decimal> source) => source.StandardDeviationPopulation());
            __standardDeviationPopulationDecimalAsync = ReflectionInfo.Method((IMongoQueryable<decimal> source, CancellationToken cancellationToken) => source.StandardDeviationPopulationAsync(cancellationToken));
            __standardDeviationPopulationDecimalWithSelector = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, decimal>> selector) => source.StandardDeviationPopulation(selector));
            __standardDeviationPopulationDecimalWithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, decimal>> selector, CancellationToken cancellationToken) => source.StandardDeviationPopulationAsync(selector, cancellationToken));
            __standardDeviationPopulationDouble = ReflectionInfo.Method((IMongoQueryable<double> source) => source.StandardDeviationPopulation());
            __standardDeviationPopulationDoubleAsync = ReflectionInfo.Method((IMongoQueryable<double> source, CancellationToken cancellationToken) => source.StandardDeviationPopulationAsync(cancellationToken));
            __standardDeviationPopulationDoubleWithSelector = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, double>> selector) => source.StandardDeviationPopulation(selector));
            __standardDeviationPopulationDoubleWithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, double>> selector, CancellationToken cancellationToken) => source.StandardDeviationPopulationAsync(selector, cancellationToken));
            __standardDeviationPopulationInt32 = ReflectionInfo.Method((IMongoQueryable<int> source) => source.StandardDeviationPopulation());
            __standardDeviationPopulationInt32Async = ReflectionInfo.Method((IMongoQueryable<int> source, CancellationToken cancellationToken) => source.StandardDeviationPopulationAsync(cancellationToken));
            __standardDeviationPopulationInt32WithSelector = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, int>> selector) => source.StandardDeviationPopulation(selector));
            __standardDeviationPopulationInt32WithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, int>> selector, CancellationToken cancellationToken) => source.StandardDeviationPopulationAsync(selector, cancellationToken));
            __standardDeviationPopulationInt64 = ReflectionInfo.Method((IMongoQueryable<long> source) => source.StandardDeviationPopulation());
            __standardDeviationPopulationInt64Async = ReflectionInfo.Method((IMongoQueryable<long> source, CancellationToken cancellationToken) => source.StandardDeviationPopulationAsync(cancellationToken));
            __standardDeviationPopulationInt64WithSelector = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, long>> selector) => source.StandardDeviationPopulation(selector));
            __standardDeviationPopulationInt64WithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, long>> selector, CancellationToken cancellationToken) => source.StandardDeviationPopulationAsync(selector, cancellationToken));
            __standardDeviationPopulationNullableDecimal = ReflectionInfo.Method((IMongoQueryable<decimal?> source) => source.StandardDeviationPopulation());
            __standardDeviationPopulationNullableDecimalAsync = ReflectionInfo.Method((IMongoQueryable<decimal?> source, CancellationToken cancellationToken) => source.StandardDeviationPopulationAsync(cancellationToken));
            __standardDeviationPopulationNullableDecimalWithSelector = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, decimal?>> selector) => source.StandardDeviationPopulation(selector));
            __standardDeviationPopulationNullableDecimalWithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, decimal?>> selector, CancellationToken cancellationToken) => source.StandardDeviationPopulationAsync(selector, cancellationToken));
            __standardDeviationPopulationNullableDouble = ReflectionInfo.Method((IMongoQueryable<double?> source) => source.StandardDeviationPopulation());
            __standardDeviationPopulationNullableDoubleAsync = ReflectionInfo.Method((IMongoQueryable<double?> source, CancellationToken cancellationToken) => source.StandardDeviationPopulationAsync(cancellationToken));
            __standardDeviationPopulationNullableDoubleWithSelector = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, double?>> selector) => source.StandardDeviationPopulation(selector));
            __standardDeviationPopulationNullableDoubleWithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, double?>> selector, CancellationToken cancellationToken) => source.StandardDeviationPopulationAsync(selector, cancellationToken));
            __standardDeviationPopulationNullableInt32 = ReflectionInfo.Method((IMongoQueryable<int?> source) => source.StandardDeviationPopulation());
            __standardDeviationPopulationNullableInt32Async = ReflectionInfo.Method((IMongoQueryable<int?> source, CancellationToken cancellationToken) => source.StandardDeviationPopulationAsync(cancellationToken));
            __standardDeviationPopulationNullableInt32WithSelector = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, int?>> selector) => source.StandardDeviationPopulation(selector));
            __standardDeviationPopulationNullableInt32WithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, int?>> selector, CancellationToken cancellationToken) => source.StandardDeviationPopulationAsync(selector, cancellationToken));
            __standardDeviationPopulationNullableInt64 = ReflectionInfo.Method((IMongoQueryable<long?> source) => source.StandardDeviationPopulation());
            __standardDeviationPopulationNullableInt64Async = ReflectionInfo.Method((IMongoQueryable<long?> source, CancellationToken cancellationToken) => source.StandardDeviationPopulationAsync(cancellationToken));
            __standardDeviationPopulationNullableInt64WithSelector = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, long?>> selector) => source.StandardDeviationPopulation(selector));
            __standardDeviationPopulationNullableInt64WithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, long?>> selector, CancellationToken cancellationToken) => source.StandardDeviationPopulationAsync(selector, cancellationToken));
            __standardDeviationPopulationNullableSingle = ReflectionInfo.Method((IMongoQueryable<float?> source) => source.StandardDeviationPopulation());
            __standardDeviationPopulationNullableSingleAsync = ReflectionInfo.Method((IMongoQueryable<float?> source, CancellationToken cancellationToken) => source.StandardDeviationPopulationAsync(cancellationToken));
            __standardDeviationPopulationNullableSingleWithSelector = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, float?>> selector) => source.StandardDeviationPopulation(selector));
            __standardDeviationPopulationNullableSingleWithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, float?>> selector, CancellationToken cancellationToken) => source.StandardDeviationPopulationAsync(selector, cancellationToken));
            __standardDeviationPopulationSingle = ReflectionInfo.Method((IMongoQueryable<float> source) => source.StandardDeviationPopulation());
            __standardDeviationPopulationSingleAsync = ReflectionInfo.Method((IMongoQueryable<float> source, CancellationToken cancellationToken) => source.StandardDeviationPopulationAsync(cancellationToken));
            __standardDeviationPopulationSingleWithSelector = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, float>> selector) => source.StandardDeviationPopulation(selector));
            __standardDeviationPopulationSingleWithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, float>> selector, CancellationToken cancellationToken) => source.StandardDeviationPopulationAsync(selector, cancellationToken));
            __standardDeviationSampleDecimal = ReflectionInfo.Method((IMongoQueryable<decimal> source) => source.StandardDeviationSample());
            __standardDeviationSampleDecimalAsync = ReflectionInfo.Method((IMongoQueryable<decimal> source, CancellationToken cancellationToken) => source.StandardDeviationSampleAsync(cancellationToken));
            __standardDeviationSampleDecimalWithSelector = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, decimal>> selector) => source.StandardDeviationSample(selector));
            __standardDeviationSampleDecimalWithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, decimal>> selector, CancellationToken cancellationToken) => source.StandardDeviationSampleAsync(selector, cancellationToken));
            __standardDeviationSampleDouble = ReflectionInfo.Method((IMongoQueryable<double> source) => source.StandardDeviationSample());
            __standardDeviationSampleDoubleAsync = ReflectionInfo.Method((IMongoQueryable<double> source, CancellationToken cancellationToken) => source.StandardDeviationSampleAsync(cancellationToken));
            __standardDeviationSampleDoubleWithSelector = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, double>> selector) => source.StandardDeviationSample(selector));
            __standardDeviationSampleDoubleWithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, double>> selector, CancellationToken cancellationToken) => source.StandardDeviationSampleAsync(selector, cancellationToken));
            __standardDeviationSampleInt32 = ReflectionInfo.Method((IMongoQueryable<int> source) => source.StandardDeviationSample());
            __standardDeviationSampleInt32Async = ReflectionInfo.Method((IMongoQueryable<int> source, CancellationToken cancellationToken) => source.StandardDeviationSampleAsync(cancellationToken));
            __standardDeviationSampleInt32WithSelector = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, int>> selector) => source.StandardDeviationSample(selector));
            __standardDeviationSampleInt32WithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, int>> selector, CancellationToken cancellationToken) => source.StandardDeviationSampleAsync(selector, cancellationToken));
            __standardDeviationSampleInt64 = ReflectionInfo.Method((IMongoQueryable<long> source) => source.StandardDeviationSample());
            __standardDeviationSampleInt64Async = ReflectionInfo.Method((IMongoQueryable<long> source, CancellationToken cancellationToken) => source.StandardDeviationSampleAsync(cancellationToken));
            __standardDeviationSampleInt64WithSelector = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, long>> selector) => source.StandardDeviationSample(selector));
            __standardDeviationSampleInt64WithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, long>> selector, CancellationToken cancellationToken) => source.StandardDeviationSampleAsync(selector, cancellationToken));
            __standardDeviationSampleNullableDecimal = ReflectionInfo.Method((IMongoQueryable<decimal?> source) => source.StandardDeviationSample());
            __standardDeviationSampleNullableDecimalAsync = ReflectionInfo.Method((IMongoQueryable<decimal?> source, CancellationToken cancellationToken) => source.StandardDeviationSampleAsync(cancellationToken));
            __standardDeviationSampleNullableDecimalWithSelector = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, decimal?>> selector) => source.StandardDeviationSample(selector));
            __standardDeviationSampleNullableDecimalWithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, decimal?>> selector, CancellationToken cancellationToken) => source.StandardDeviationSampleAsync(selector, cancellationToken));
            __standardDeviationSampleNullableDouble = ReflectionInfo.Method((IMongoQueryable<double?> source) => source.StandardDeviationSample());
            __standardDeviationSampleNullableDoubleAsync = ReflectionInfo.Method((IMongoQueryable<double?> source, CancellationToken cancellationToken) => source.StandardDeviationSampleAsync(cancellationToken));
            __standardDeviationSampleNullableDoubleWithSelector = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, double?>> selector) => source.StandardDeviationSample(selector));
            __standardDeviationSampleNullableDoubleWithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, double?>> selector, CancellationToken cancellationToken) => source.StandardDeviationSampleAsync(selector, cancellationToken));
            __standardDeviationSampleNullableInt32 = ReflectionInfo.Method((IMongoQueryable<int?> source) => source.StandardDeviationSample());
            __standardDeviationSampleNullableInt32Async = ReflectionInfo.Method((IMongoQueryable<int?> source, CancellationToken cancellationToken) => source.StandardDeviationSampleAsync(cancellationToken));
            __standardDeviationSampleNullableInt32WithSelector = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, int?>> selector) => source.StandardDeviationSample(selector));
            __standardDeviationSampleNullableInt32WithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, int?>> selector, CancellationToken cancellationToken) => source.StandardDeviationSampleAsync(selector, cancellationToken));
            __standardDeviationSampleNullableInt64 = ReflectionInfo.Method((IMongoQueryable<long?> source) => source.StandardDeviationSample());
            __standardDeviationSampleNullableInt64Async = ReflectionInfo.Method((IMongoQueryable<long?> source, CancellationToken cancellationToken) => source.StandardDeviationSampleAsync(cancellationToken));
            __standardDeviationSampleNullableInt64WithSelector = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, long?>> selector) => source.StandardDeviationSample(selector));
            __standardDeviationSampleNullableInt64WithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, long?>> selector, CancellationToken cancellationToken) => source.StandardDeviationSampleAsync(selector, cancellationToken));
            __standardDeviationSampleNullableSingle = ReflectionInfo.Method((IMongoQueryable<float?> source) => source.StandardDeviationSample());
            __standardDeviationSampleNullableSingleAsync = ReflectionInfo.Method((IMongoQueryable<float?> source, CancellationToken cancellationToken) => source.StandardDeviationSampleAsync(cancellationToken));
            __standardDeviationSampleNullableSingleWithSelector = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, float?>> selector) => source.StandardDeviationSample(selector));
            __standardDeviationSampleNullableSingleWithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, float?>> selector, CancellationToken cancellationToken) => source.StandardDeviationSampleAsync(selector, cancellationToken));
            __standardDeviationSampleSingle = ReflectionInfo.Method((IMongoQueryable<float> source) => source.StandardDeviationSample());
            __standardDeviationSampleSingleAsync = ReflectionInfo.Method((IMongoQueryable<float> source, CancellationToken cancellationToken) => source.StandardDeviationSampleAsync(cancellationToken));
            __standardDeviationSampleSingleWithSelector = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, float>> selector) => source.StandardDeviationSample(selector));
            __standardDeviationSampleSingleWithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, float>> selector, CancellationToken cancellationToken) => source.StandardDeviationSampleAsync(selector, cancellationToken));
            __sumDecimalAsync = ReflectionInfo.Method((IMongoQueryable<decimal> source, CancellationToken cancellationToken) => source.SumAsync(cancellationToken));
            __sumDecimalWithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, decimal>> selector, CancellationToken cancellationToken) => source.SumAsync(selector, cancellationToken));
            __sumDoubleAsync = ReflectionInfo.Method((IMongoQueryable<double> source, CancellationToken cancellationToken) => source.SumAsync(cancellationToken));
            __sumDoubleWithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, double>> selector, CancellationToken cancellationToken) => source.SumAsync(selector, cancellationToken));
            __sumInt32Async = ReflectionInfo.Method((IMongoQueryable<int> source, CancellationToken cancellationToken) => source.SumAsync(cancellationToken));
            __sumInt32WithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, int>> selector, CancellationToken cancellationToken) => source.SumAsync(selector, cancellationToken));
            __sumInt64Async = ReflectionInfo.Method((IMongoQueryable<long> source, CancellationToken cancellationToken) => source.SumAsync(cancellationToken));
            __sumInt64WithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, long>> selector, CancellationToken cancellationToken) => source.SumAsync(selector, cancellationToken));
            __sumNullableDecimalAsync = ReflectionInfo.Method((IMongoQueryable<decimal?> source, CancellationToken cancellationToken) => source.SumAsync(cancellationToken));
            __sumNullableDecimalWithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, decimal?>> selector, CancellationToken cancellationToken) => source.SumAsync(selector, cancellationToken));
            __sumNullableDoubleAsync = ReflectionInfo.Method((IMongoQueryable<double?> source, CancellationToken cancellationToken) => source.SumAsync(cancellationToken));
            __sumNullableDoubleWithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, double?>> selector, CancellationToken cancellationToken) => source.SumAsync(selector, cancellationToken));
            __sumNullableInt32Async = ReflectionInfo.Method((IMongoQueryable<int?> source, CancellationToken cancellationToken) => source.SumAsync(cancellationToken));
            __sumNullableInt32WithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, int?>> selector, CancellationToken cancellationToken) => source.SumAsync(selector, cancellationToken));
            __sumNullableInt64Async = ReflectionInfo.Method((IMongoQueryable<long?> source, CancellationToken cancellationToken) => source.SumAsync(cancellationToken));
            __sumNullableInt64WithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, long?>> selector, CancellationToken cancellationToken) => source.SumAsync(selector, cancellationToken));
            __sumNullableSingleAsync = ReflectionInfo.Method((IMongoQueryable<float?> source, CancellationToken cancellationToken) => source.SumAsync(cancellationToken));
            __sumNullableSingleWithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, float?>> selector, CancellationToken cancellationToken) => source.SumAsync(selector, cancellationToken));
            __sumSingleAsync = ReflectionInfo.Method((IMongoQueryable<float> source, CancellationToken cancellationToken) => source.SumAsync(cancellationToken));
            __sumSingleWithSelectorAsync = ReflectionInfo.Method((IMongoQueryable<object> source, Expression<Func<object, float>> selector, CancellationToken cancellationToken) => source.SumAsync(selector, cancellationToken));
            __takeWithLong = ReflectionInfo.Method((IMongoQueryable<object> source, long count) => source.Take(count));
        }

        // public properties
        public static MethodInfo AnyAsync => __anyAsync;
        public static MethodInfo AnyWithPredicateAsync => __anyWithPredicateAsync;
        public static MethodInfo AppendStage => __appendStage;
        public static MethodInfo As => __as;
        public static MethodInfo AverageDecimalAsync => __averageDecimalAsync;
        public static MethodInfo AverageDecimalWithSelectorAsync => __averageDecimalWithSelectorAsync;
        public static MethodInfo AverageDoubleAsync => __averageDoubleAsync;
        public static MethodInfo AverageDoubleWithSelectorAsync => __averageDoubleWithSelectorAsync;
        public static MethodInfo AverageInt32Async => __averageInt32Async;
        public static MethodInfo AverageInt32WithSelectorAsync => __averageInt32WithSelectorAsync;
        public static MethodInfo AverageInt64Async => __averageInt64Async;
        public static MethodInfo AverageInt64WithSelectorAsync => __averageInt64WithSelectorAsync;
        public static MethodInfo AverageNullableDecimalAsync => __averageNullableDecimalAsync;
        public static MethodInfo AverageNullableDecimalWithSelectorAsync => __averageNullableDecimalWithSelectorAsync;
        public static MethodInfo AverageNullableDoubleAsync => __averageNullableDoubleAsync;
        public static MethodInfo AverageNullableDoubleWithSelectorAsync => __averageNullableDoubleWithSelectorAsync;
        public static MethodInfo AverageNullableInt32Async => __averageNullableInt32Async;
        public static MethodInfo AverageNullableInt32WithSelectorAsync => __averageNullableInt32WithSelectorAsync;
        public static MethodInfo AverageNullableInt64Async => __averageNullableInt64Async;
        public static MethodInfo AverageNullableInt64WithSelectorAsync => __averageNullableInt64WithSelectorAsync;
        public static MethodInfo AverageNullableSingleAsync => __averageNullableSingleAsync;
        public static MethodInfo AverageNullableSingleWithSelectorAsync => __averageNullableSingleWithSelectorAsync;
        public static MethodInfo AverageSingleAsync => __averageSingleAsync;
        public static MethodInfo AverageSingleWithSelectorAsync => __averageSingleWithSelectorAsync;
        public static MethodInfo CountAsync => __countAsync;
        public static MethodInfo CountWithPredicateAsync => __countWithPredicateAsync;
        public static MethodInfo DensifyWithArrayPartitionByFields => __densifyWithArrayPartitionByFields;
        public static MethodInfo Documents => __documents;
        public static MethodInfo DocumentsWithSerializer => __documentsWithSerializer;
        public static MethodInfo FirstAsync => __firstAsync;
        public static MethodInfo FirstOrDefaultAsync => __firstOrDefaultAsync;
        public static MethodInfo FirstOrDefaultWithPredicateAsync => __firstOrDefaultWithPredicateAsync;
        public static MethodInfo FirstWithPredicateAsync => __firstWithPredicateAsync;
        public static MethodInfo LongCountAsync => __longCountAsync;
        public static MethodInfo LongCountWithPredicateAsync => __longCountWithPredicateAsync;
        public static MethodInfo MaxAsync => __maxAsync;
        public static MethodInfo MaxWithSelectorAsync => __maxWithSelectorAsync;
        public static MethodInfo MinAsync => __minAsync;
        public static MethodInfo MinWithSelectorAsync => __minWithSelectorAsync;
        public static MethodInfo Sample => __sample;
        public static MethodInfo SingleAsync => __singleAsync;
        public static MethodInfo SingleOrDefaultAsync => __singleOrDefaultAsync;
        public static MethodInfo SingleOrDefaultWithPredicateAsync => __singleOrDefaultWithPredicateAsync;
        public static MethodInfo SingleWithPredicateAsync => __singleWithPredicateAsync;
        public static MethodInfo SkipWithLong => __skipWithLong;
        public static MethodInfo StandardDeviationPopulationDecimal => __standardDeviationPopulationDecimal;
        public static MethodInfo StandardDeviationPopulationDecimalAsync => __standardDeviationPopulationDecimalAsync;
        public static MethodInfo StandardDeviationPopulationDecimalWithSelector => __standardDeviationPopulationDecimalWithSelector;
        public static MethodInfo StandardDeviationPopulationDecimalWithSelectorAsync => __standardDeviationPopulationDecimalWithSelectorAsync;
        public static MethodInfo StandardDeviationPopulationDouble => __standardDeviationPopulationDouble;
        public static MethodInfo StandardDeviationPopulationDoubleAsync => __standardDeviationPopulationDoubleAsync;
        public static MethodInfo StandardDeviationPopulationDoubleWithSelector => __standardDeviationPopulationDoubleWithSelector;
        public static MethodInfo StandardDeviationPopulationDoubleWithSelectorAsync => __standardDeviationPopulationDoubleWithSelectorAsync;
        public static MethodInfo StandardDeviationPopulationInt32 => __standardDeviationPopulationInt32;
        public static MethodInfo StandardDeviationPopulationInt32Async => __standardDeviationPopulationInt32Async;
        public static MethodInfo StandardDeviationPopulationInt32WithSelector => __standardDeviationPopulationInt32WithSelector;
        public static MethodInfo StandardDeviationPopulationInt32WithSelectorAsync => __standardDeviationPopulationInt32WithSelectorAsync;
        public static MethodInfo StandardDeviationPopulationInt64 => __standardDeviationPopulationInt64;
        public static MethodInfo StandardDeviationPopulationInt64Async => __standardDeviationPopulationInt64Async;
        public static MethodInfo StandardDeviationPopulationInt64WithSelector => __standardDeviationPopulationInt64WithSelector;
        public static MethodInfo StandardDeviationPopulationInt64WithSelectorAsync => __standardDeviationPopulationInt64WithSelectorAsync;
        public static MethodInfo StandardDeviationPopulationNullableDecimal => __standardDeviationPopulationNullableDecimal;
        public static MethodInfo StandardDeviationPopulationNullableDecimalAsync => __standardDeviationPopulationNullableDecimalAsync;
        public static MethodInfo StandardDeviationPopulationNullableDecimalWithSelector => __standardDeviationPopulationNullableDecimalWithSelector;
        public static MethodInfo StandardDeviationPopulationNullableDecimalWithSelectorAsync => __standardDeviationPopulationNullableDecimalWithSelectorAsync;
        public static MethodInfo StandardDeviationPopulationNullableDouble => __standardDeviationPopulationNullableDouble;
        public static MethodInfo StandardDeviationPopulationNullableDoubleAsync => __standardDeviationPopulationNullableDoubleAsync;
        public static MethodInfo StandardDeviationPopulationNullableDoubleWithSelector => __standardDeviationPopulationNullableDoubleWithSelector;
        public static MethodInfo StandardDeviationPopulationNullableDoubleWithSelectorAsync => __standardDeviationPopulationNullableDoubleWithSelectorAsync;
        public static MethodInfo StandardDeviationPopulationNullableInt32 => __standardDeviationPopulationNullableInt32;
        public static MethodInfo StandardDeviationPopulationNullableInt32Async => __standardDeviationPopulationNullableInt32Async;
        public static MethodInfo StandardDeviationPopulationNullableInt32WithSelector => __standardDeviationPopulationNullableInt32WithSelector;
        public static MethodInfo StandardDeviationPopulationNullableInt32WithSelectorAsync => __standardDeviationPopulationNullableInt32WithSelectorAsync;
        public static MethodInfo StandardDeviationPopulationNullableInt64 => __standardDeviationPopulationNullableInt64;
        public static MethodInfo StandardDeviationPopulationNullableInt64Async => __standardDeviationPopulationNullableInt64Async;
        public static MethodInfo StandardDeviationPopulationNullableInt64WithSelector => __standardDeviationPopulationNullableInt64WithSelector;
        public static MethodInfo StandardDeviationPopulationNullableInt64WithSelectorAsync => __standardDeviationPopulationNullableInt64WithSelectorAsync;
        public static MethodInfo StandardDeviationPopulationNullableSingle => __standardDeviationPopulationNullableSingle;
        public static MethodInfo StandardDeviationPopulationNullableSingleAsync => __standardDeviationPopulationNullableSingleAsync;
        public static MethodInfo StandardDeviationPopulationNullableSingleWithSelector => __standardDeviationPopulationNullableSingleWithSelector;
        public static MethodInfo StandardDeviationPopulationNullableSingleWithSelectorAsync => __standardDeviationPopulationNullableSingleWithSelectorAsync;
        public static MethodInfo StandardDeviationPopulationSingle => __standardDeviationPopulationSingle;
        public static MethodInfo StandardDeviationPopulationSingleAsync => __standardDeviationPopulationSingleAsync;
        public static MethodInfo StandardDeviationPopulationSingleWithSelector => __standardDeviationPopulationSingleWithSelector;
        public static MethodInfo StandardDeviationPopulationSingleWithSelectorAsync => __standardDeviationPopulationSingleWithSelectorAsync;
        public static MethodInfo StandardDeviationSampleDecimal => __standardDeviationSampleDecimal;
        public static MethodInfo StandardDeviationSampleDecimalAsync => __standardDeviationSampleDecimalAsync;
        public static MethodInfo StandardDeviationSampleDecimalWithSelector => __standardDeviationSampleDecimalWithSelector;
        public static MethodInfo StandardDeviationSampleDecimalWithSelectorAsync => __standardDeviationSampleDecimalWithSelectorAsync;
        public static MethodInfo StandardDeviationSampleDouble => __standardDeviationSampleDouble;
        public static MethodInfo StandardDeviationSampleDoubleAsync => __standardDeviationSampleDoubleAsync;
        public static MethodInfo StandardDeviationSampleDoubleWithSelector => __standardDeviationSampleDoubleWithSelector;
        public static MethodInfo StandardDeviationSampleDoubleWithSelectorAsync => __standardDeviationSampleDoubleWithSelectorAsync;
        public static MethodInfo StandardDeviationSampleInt32 => __standardDeviationSampleInt32;
        public static MethodInfo StandardDeviationSampleInt32Async => __standardDeviationSampleInt32Async;
        public static MethodInfo StandardDeviationSampleInt32WithSelector => __standardDeviationSampleInt32WithSelector;
        public static MethodInfo StandardDeviationSampleInt32WithSelectorAsync => __standardDeviationSampleInt32WithSelectorAsync;
        public static MethodInfo StandardDeviationSampleInt64 => __standardDeviationSampleInt64;
        public static MethodInfo StandardDeviationSampleInt64Async => __standardDeviationSampleInt64Async;
        public static MethodInfo StandardDeviationSampleInt64WithSelector => __standardDeviationSampleInt64WithSelector;
        public static MethodInfo StandardDeviationSampleInt64WithSelectorAsync => __standardDeviationSampleInt64WithSelectorAsync;
        public static MethodInfo StandardDeviationSampleNullableDecimal => __standardDeviationSampleNullableDecimal;
        public static MethodInfo StandardDeviationSampleNullableDecimalAsync => __standardDeviationSampleNullableDecimalAsync;
        public static MethodInfo StandardDeviationSampleNullableDecimalWithSelector => __standardDeviationSampleNullableDecimalWithSelector;
        public static MethodInfo StandardDeviationSampleNullableDecimalWithSelectorAsync => __standardDeviationSampleNullableDecimalWithSelectorAsync;
        public static MethodInfo StandardDeviationSampleNullableDouble => __standardDeviationSampleNullableDouble;
        public static MethodInfo StandardDeviationSampleNullableDoubleAsync => __standardDeviationSampleNullableDoubleAsync;
        public static MethodInfo StandardDeviationSampleNullableDoubleWithSelector => __standardDeviationSampleNullableDoubleWithSelector;
        public static MethodInfo StandardDeviationSampleNullableDoubleWithSelectorAsync => __standardDeviationSampleNullableDoubleWithSelectorAsync;
        public static MethodInfo StandardDeviationSampleNullableInt32 => __standardDeviationSampleNullableInt32;
        public static MethodInfo StandardDeviationSampleNullableInt32Async => __standardDeviationSampleNullableInt32Async;
        public static MethodInfo StandardDeviationSampleNullableInt32WithSelector => __standardDeviationSampleNullableInt32WithSelector;
        public static MethodInfo StandardDeviationSampleNullableInt32WithSelectorAsync => __standardDeviationSampleNullableInt32WithSelectorAsync;
        public static MethodInfo StandardDeviationSampleNullableInt64 => __standardDeviationSampleNullableInt64;
        public static MethodInfo StandardDeviationSampleNullableInt64Async => __standardDeviationSampleNullableInt64Async;
        public static MethodInfo StandardDeviationSampleNullableInt64WithSelector => __standardDeviationSampleNullableInt64WithSelector;
        public static MethodInfo StandardDeviationSampleNullableInt64WithSelectorAsync => __standardDeviationSampleNullableInt64WithSelectorAsync;
        public static MethodInfo StandardDeviationSampleNullableSingle => __standardDeviationSampleNullableSingle;
        public static MethodInfo StandardDeviationSampleNullableSingleAsync => __standardDeviationSampleNullableSingleAsync;
        public static MethodInfo StandardDeviationSampleNullableSingleWithSelector => __standardDeviationSampleNullableSingleWithSelector;
        public static MethodInfo StandardDeviationSampleNullableSingleWithSelectorAsync => __standardDeviationSampleNullableSingleWithSelectorAsync;
        public static MethodInfo StandardDeviationSampleSingle => __standardDeviationSampleSingle;
        public static MethodInfo StandardDeviationSampleSingleAsync => __standardDeviationSampleSingleAsync;
        public static MethodInfo StandardDeviationSampleSingleWithSelector => __standardDeviationSampleSingleWithSelector;
        public static MethodInfo StandardDeviationSampleSingleWithSelectorAsync => __standardDeviationSampleSingleWithSelectorAsync;
        public static MethodInfo SumDecimalAsync => __sumDecimalAsync;
        public static MethodInfo SumDecimalWithSelectorAsync => __sumDecimalWithSelectorAsync;
        public static MethodInfo SumDoubleAsync => __sumDoubleAsync;
        public static MethodInfo SumDoubleWithSelectorAsync => __sumDoubleWithSelectorAsync;
        public static MethodInfo SumInt32Async => __sumInt32Async;
        public static MethodInfo SumInt32WithSelectorAsync => __sumInt32WithSelectorAsync;
        public static MethodInfo SumInt64Async => __sumInt64Async;
        public static MethodInfo SumInt64WithSelectorAsync => __sumInt64WithSelectorAsync;
        public static MethodInfo SumNullableDecimalAsync => __sumNullableDecimalAsync;
        public static MethodInfo SumNullableDecimalWithSelectorAsync => __sumNullableDecimalWithSelectorAsync;
        public static MethodInfo SumNullableDoubleAsync => __sumNullableDoubleAsync;
        public static MethodInfo SumNullableDoubleWithSelectorAsync => __sumNullableDoubleWithSelectorAsync;
        public static MethodInfo SumNullableInt32Async => __sumNullableInt32Async;
        public static MethodInfo SumNullableInt32WithSelectorAsync => __sumNullableInt32WithSelectorAsync;
        public static MethodInfo SumNullableInt64Async => __sumNullableInt64Async;
        public static MethodInfo SumNullableInt64WithSelectorAsync => __sumNullableInt64WithSelectorAsync;
        public static MethodInfo SumNullableSingleAsync => __sumNullableSingleAsync;
        public static MethodInfo SumNullableSingleWithSelectorAsync => __sumNullableSingleWithSelectorAsync;
        public static MethodInfo SumSingleAsync => __sumSingleAsync;
        public static MethodInfo SumSingleWithSelectorAsync => __sumSingleWithSelectorAsync;
        public static MethodInfo TakeWithLong => __takeWithLong;
    }
}
